package de.fhin.mas.agents.manager.behaviours;

import jade.core.behaviours.CyclicBehaviour;
import jade.lang.acl.ACLMessage;
import jade.lang.acl.MessageTemplate;
import de.fhin.mas.MASEvents;
import de.fhin.mas.agents.manager.ManagerAgent;

/**
 * Handling des Verlusts des zu transportierenden Objekts. --> Neustart des
 * Auftrags.
 * 
 * @author Ast
 * 
 */
public class HandleObjectLost extends CyclicBehaviour {
	private static final long serialVersionUID = 1L;
	private ManagerAgent managerAgent;

	public HandleObjectLost(ManagerAgent a) {
		this.managerAgent = a;
	}

	/**
	 * Wurde das Objekt vom Bot verloren, so den Auftrag einfach neu starten. Es
	 * wird davon ausgegangen, dass dann der Sucher das verlorene Objekt gleich
	 * wieder findet und so das Objekt weitertransportiert wird.
	 */
	@Override
	public void action() {
		MessageTemplate mt = MessageTemplate.and(MessageTemplate.MatchConversationId(MASEvents.OBJECT_LOST.getName()),
				MessageTemplate.MatchPerformative(ACLMessage.INFORM));

		ACLMessage msg = myAgent.receive(mt);
		if (msg == null)
			block();
		else {
			managerAgent.sendMsgToUser("Object lost. Restaring order!");
			managerAgent.initRestartOrder();
		}
	}
}
